package com.ukadas.eduko.persistencia.mtm;

import java.util.ArrayList;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.ukadas.eduko.modelo.mtm.CursoProyecto;

@Repository
public class CursoProyectoDaoSpringHibernate4Implementation implements CursoProyectoDao {

	@Autowired
	private SessionFactory sessionFactory;
	
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public void insertar(CursoProyecto cursoProyecto)  {
		sessionFactory.getCurrentSession().save(cursoProyecto);
	}

	public void modificar(CursoProyecto cursoProyecto)  {
		sessionFactory.getCurrentSession().update(cursoProyecto);
	}

	public void borrar(CursoProyecto cursoProyecto)  {
		cursoProyecto.setBorrado(true);
		sessionFactory.getCurrentSession().update(cursoProyecto);
	}

	public CursoProyecto buscar(int idtutor)  {
		return (CursoProyecto)	sessionFactory.getCurrentSession().get(CursoProyecto.class, idtutor);
	}

	@SuppressWarnings("unchecked")
	public List<CursoProyecto> listarTodos()  {
		return sessionFactory.getCurrentSession().createQuery("from CursoProyecto c where c.borrado=0").list();
	}

	
	@SuppressWarnings("unchecked")
	public List<CursoProyecto> buscarPorTutor(String idTutor) {
		String sentencia="select distinct concat(cp.curso.idCurso, cp.letra.idLetra) as cursoLetra, " +
				"count(cp.idCursoProyecto) as total, cp from CursoProyecto cp where cp.borrado=0 and " +
				"cp.tutor.idPersona=" + idTutor +" group by concat(cp.curso.idCurso, cp.letra.idLetra)";
		//devuelve object
		List<CursoProyecto> lista= sessionFactory.getCurrentSession().createQuery(sentencia).list();
		return lista;
	}
	
	@SuppressWarnings("unchecked")
	public List<Object[]> buscarPorTutor(int idTutor) {
		String sentencia="select distinct concat(cp.curso.idCurso, cp.letra.idLetra) as cursoLetra, " +
				"count(cp.idCursoProyecto) as total, cp from CursoProyecto cp where cp.borrado=0 and " +
				"cp.tutor.idPersona=" + idTutor +" group by concat(cp.curso.idCurso, cp.letra.idLetra)";
		//devuelve object
		List<Object[]> lista= new ArrayList<Object[]>();
		List<Object[]> listaCP=sessionFactory.getCurrentSession().createQuery(sentencia).list();
		
		for( Object[] objetoCP: listaCP){
			Object[] objeto={objetoCP[0],objetoCP[1],objetoCP[2]};
			lista.add(objeto);
		}
		
		return listaCP;
	}
	

	
}
